package 普通数组.最大子数和;

/**
 * 题目思路：
 * 1. 创建一个变量maxPre，记录当前位置之前的最大值
 *
 * */
class Solution2 {
    public int maxSubArray(int[] nums) {
        int maxPre = 0;
        int res = nums[0];
        // 从第二个元素开始遍历
        for(int num : nums){
            // 记录之前最大值
            // 如果当前值加上之前最大值大于当前值，则当前值加上之前最大值就是当前最大值
            maxPre = Math.max(maxPre + num,num);
            // 更新全局最大值
            res = Math.max(maxPre,res);
        }
        return res; // 返回最大子数的和
    }
    public static void main(String[] args){
        Solution solution = new Solution();
        int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
        System.out.println(solution.maxSubArray(nums));
    }
}